/*
作者：刘清政（llnb）
时间：2021/4/29
作用：
 */

import axios from "axios";
import router from "../router";
import Element from "element-ui"

// axios.defaults.baseURL = "http://localhost:8081"
axios.defaults.baseURL = "http://127.0.0.1:8001/api/v1"

//创建请求对象
//指定超时时间为5000毫秒
//指定请求头中编码格式为application/json
const request = axios.create({
    timeout: 5000,
    headers: {
        'Content-Type': "application/json; charset=utf-8"
    }
})

//在请求发出之前进行拦截，
// 从localStorage中取出token携带在请求头中
request.interceptors.request.use(config => {
    config.headers['Authorization'] = localStorage.getItem("token")
    return config
})


//在请求响应后进行拦截，
// 如果响应数据中的status为100，表示成功，不做处理，如果不是100，使用elementui显示错误信息
// 如果响应对象的状态码为401，重定向到登陆页面，只要有错误，就打印错误信息
request.interceptors.response.use(
    response => {
        console.log("response ->" + response)
        let res = response.data
        if (res.code === 100) {
            return response.data
        } else {
            Element.Message.error(!res.msg ? '请求服务器异常,请联系管理员' : res.msg)
            return Promise.reject(response.data.msg)
        }
    },
    error => {
        console.log(error)
        if (error.response.data) {
            error.massage = error.response.data.msg
        }
        if (error.response.status === 401) {
            router.push("/login")
        }
        Element.Message.error(error.massage, {duration: 3000})
        return Promise.reject(error)
    }
)

export default request